{{tag>Trusty SIG openstreetmap itinéraires BROUILLON}}
----
 
====== OSRM  ======
 
OSRM est un moteur de calculateur d’itinéraire open source très léger, très efficace et utilise les données Openstreetmap. Il se démarque des autres moteurs de calculateurs d’itinéraires en utilisant l’algorithme Contraction hiérarchies moins répandu (pour les experts) que le A* par exemple.
 
OSRM peut être utilisé en ligne mais également installé sur un serveur ou une station de travail personnelle, ce que vous propose cette page.

<note tip>**Tester OSRM en ligne :**

[[http://router.project-osrm.org/viaroute?loc=48.85755,2.34727&loc=43.29528,5.37439&instructions=true|Itinéraire entre la place du Châtelet à Paris (point 48,85755 - 2,34727) et le quai des Belges à Marseille (point 43,29528 - 5,37439)]].
Syntaxe du lien : <http://router.project-osrm.org/viaroute?loc=48.85755,2.34727&loc=43.29528,5.37439&instructions=true>

[[http://router.project-osrm.org/viaroute?loc=48.57636,7.80027&loc=48.38453,-4.49472&instructions=true|Itinéraire entre le pont de l'Europe à Strasbourg (point 48,57636 - 7,80027) et le pont de Recouvrance à Brest (point 48,38453 / -4,49472)]].
Syntaxe du lien : <http://router.project-osrm.org/viaroute?loc=48.57636,7.80027&loc=48.38453,-4.49472&instructions=true>

Vous allez pouvoir installer cette application sur votre propre ordinateur.

Le résultat peur apparaître un peu difficile à lire. Voir en bas de page une suggestion de script pour y voir plus clair.
</note>

===== Pré-requis =====
 
  * Disposer des [[:sudo|droits d'administration]].
  * Disposer d'une connexion à Internet configurée et activée.
  * Avoir [[:tutoriel:comment_installer_un_paquet|installé les paquets]] **[[apt>build-essential|build-essential]]** **[[apt>git|git]]** **[[apt>cmake|cmake]]** **[[apt>pkg-config|pkg-config]]** **[[apt>libprotoc-dev|libprotoc-dev]]** **[[apt>libprotobuf8|libprotobuf8]]** **[[apt>protobuf-compiler|protobuf-compiler]]** **[[apt>libprotobuf-dev|libprotobuf-dev]]** **[[apt>libosmpbf-dev|libosmpbf-dev]]** **[[apt>libpng12-dev|libpng12-dev]]** **[[apt>libbz2-dev|libbz2-dev]]** **[[apt>libstxxl-dev|libstxxl-dev]]** **[[apt>libstxxl-doc|libstxxl-doc]]** **[[apt>libstxxl1|libstxxl1]]** **[[apt>libxml2-dev|libxml2-dev]]** **[[apt>libzip-dev|libzip-dev]]** **[[apt>libboost-all-dev|libboost-all-dev]]** **[[apt>lua5.1|lua5.1]]** **[[apt>liblua5.1-0-dev|liblua5.1-0-dev]]** **[[apt>libluabind-dev|libluabind-dev]]** **[[apt>libluajit-5.1-dev|libluajit-5.1-dev]]** **[[apt>libtbb-dev|libtbb-dev]]**.
<code>
sudo apt-get install build-essential git cmake pkg-config libprotoc-dev libprotobuf8 protobuf-compiler libprotobuf-dev libosmpbf-dev libpng12-dev libbz2-dev libstxxl-dev libstxxl-doc libstxxl1 libxml2-dev libzip-dev libboost-all-dev lua5.1 liblua5.1-0-dev libluabind-dev libluajit-5.1-dev libtbb-dev
</code>
 
===== Installation =====
 
==== Télécharger les sources ====

<code>
git clone https://github.com/Project-OSRM/osrm-backend.git
</code>

==== Compiler ====

Se placer dans le réperoire à l'intérieur duquel les sources ont été téléchargées :
<code>
cd osrm-backend
</code>

Puis lancer la compilation :

<code>
mkdir -p build
cd build
cmake ..
make
checkinstall
</code>

==== Création de liens ====

<code>
cd <répertoire build>
ln -s ../profiles/car.lua profile.lua
ln -s ../profiles/lib/
</code>
Le serveur est installé. 
 
===== Configuration =====
 
Il convient désormais d'installer les données cartographiques qui seront utilisées pour les calculs de routage.

==== Télécharger les données cartographiques ====

Le site Geofabrik (par exemple) fournit ce type de données. Par exemple pour la région PACA, se rendre sur :
http://download.geofabrik.de/europe/france/provence-alpes-cote-d-azur.html

et télécharger le fichier provence-alpes-cote-d-azur-latest.osm.pbf

==== Retraitement du fichier pbf ====
Le retraitement du fichier pbf permettra l'élimination des données inutiles pour le routage et leur reformattage aux normes utilisées par Osrm.

<note>
Selon le site officiel, l'extraction de données couvrant la planète tout entière peut prendre plusieurs heures, en fonction essentiellement de la vitesse du disque dur. Avec un ordinateur Core i7 doté de 8 GO de RAM et disposant d'un disque dur (lent)  5400 RPM Samsung SATA, le retraitement d'un fichier PBF à couverture planétaire a duré 65 minutes. Ce temps de traitement est susceptible de varier fortement en fonction des caractéristiques de votre processeur et de votre disque dur. La majeure partie des données est en effet sauvegardée sur disque, la taille de la RAM est réduite et l'extraction des données correspondant à la planète peut constituer des fichiers de 35 GO ou davantage.
</note>

Se rendre dans le répertoire <build>
<code>
 ./osrm-extract provence-alpes-cote-d-azur-latest.osm.pbf 
</code>
il est ensuite nécessaire de hiérarchiser ces données :
<code>
./osrm-prepare provence-alpes-cote-d-azur-latest.osrm
</code>

C'est fini. Le serveur est fonctionnel.
 
===== Utilisation =====
==== Démarrage du serveur ====
Le démarrage du serveur s'effectue en ligne de commande. Il suffit de lancer l'executable osrm-routed suivi du chemin vers le fichier .osrm créé avec osrm-extract et osrm-prepare. Exemple :
<code>
./osrm-routed ../donnees_carto/provence-alpes-cote-d-azur-latest.osrm
</code>

Dés le lancement, un certain nombre d'informations sont affichées dans le terminal. Parmi celles-ci, la ligne <running and waiting for requests> indique que le serveur s'est lancé et est prêt à effectuer les calculs demandés :
<code>
[info] running and waiting for requests
</code>
==== Lancement des requêtes ====
L'utilisation d'Osrm se fait dans le navigateur interne en saisissant localhost:5000 comme adresse.

La fonctionnalité utilisée pour obtenir un itinéraire est viaroute. 

<note important>Les coordonnées sont saisies en faisant précéder la longitude par la latitude, les résultats d'une inversion de données peuvent être fantaisistes puisque mettant en relation deux points bien différents des points recherchés. Les latitudes nord sont positives, les latitudes sud sont négatives. Les longitudes est sont positives, les longitudes ouest sont négatives (selon le méridien de Greenwich évidemment).</note>

Exemple : pour calculer l'itinéraire entre le quai des Belges à Marseille et la gare SNCF d'Aix en Provence, saisir :
http://localhost:5000/viaroute?loc=43.29528,5.37439&loc=43.52339,5.44452&instructions=true

{{ :viaroute.png?300 |}}

Vous pouvez contrôler le résultat en ligne avec :
http://router.project-osrm.org/viaroute?loc=43.29528,5.37439&loc=43.52339,5.44452&instructions=true

Les résultats ne seront pas forcément identiques entre les deux serveurs selon les données figurant dans chacune des bases de donnée mais c'est excessivement proche. 

==== Retraiter les données ====
Bien que fort utiles, les informations reçues mériteraient un peu de mise en forme et de retraitement. Le script ci-dessous est une proposition de solution pour y parvenir. Il est certainement très perfectible.

Suite à venir
===== Désinstallation =====
 
Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
 
===== Voir aussi =====
 
  * **(en)** [[http://project-osrm.org/|Projet OSRM]]
  * 
  * **(fr)** [[http://dogeo.fr/osrm-installation/|Dogeo]]
  * 
  * **(fr)** [http://openstreetmap.fr/osrm-10M|OSRM sur openstreetmap]]
 
----
//Contributeurs principaux : [[utilisateurs:votre_identifiant|votre nom ou pseudonyme]], [[utilisateurs:autre_identifiant|nom ou pseudo autre]].//
 
//Basé sur [[https://github.com/Project-OSRM/osrm-backend/wiki/Building%20OSRM|« Building OSRM »]] parDaniel J. H.//


